package org.holoeverywhere.slider;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import org.holoeverywhere.app.Fragment;
import org.holoeverywhere.drawable.DrawableCompat;
import java.lang.ref.WeakReference;
class BaseSliderItem<T extends BaseSliderItem<T>> implements Parcelable {
int mCustomLayout = 0;
Fragment.SavedState mSavedState;
SliderMenu mSliderMenu;
WeakReference<Fragment> mLastFragment;
boolean mSaveState = true;
int mBackgroundColor = 0;
Bundle mFragmentArguments;
Class<? extends Fragment> mFragmentClass;
CharSequence mLabel;
int mSelectionHandlerColor = 0;
String mTag;
int mTextAppereance = 0;
int mTextAppereanceInverse = 0;
Drawable mIcon;
BaseSliderItem() {
}
BaseSliderItem(Parcel source) throws Exception {
String classname = source.readString();
if (classname != null) {
mFragmentClass = (Class<? extends Fragment>) Class.forName(classname);
}
mSavedState = source.readParcelable(Fragment.SavedState.class.getClassLoader());
mSaveState = source.readInt() == 1;
mCustomLayout = source.readInt();
mBackgroundColor = source.readInt();
mSelectionHandlerColor = source.readInt();
mTextAppereance = source.readInt();
mTextAppereanceInverse = source.readInt();
mLabel = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source);
}
@Override
public int describeContents() {
return 0;
}
public int getBackgroundColor() {
return mBackgroundColor;
}
public T setBackgroundColor(int backgroundColor) {
mBackgroundColor = backgroundColor;
return (T) this;
}
public int getCustomLayout() {
return mCustomLayout;
}
public T setCustomLayout(int customLayout) {
mCustomLayout = customLayout;
return (T) this;
}
public Bundle getFragmentArguments() {
return mFragmentArguments;
}
public T setFragmentArguments(Bundle fragmentArguments) {
mFragmentArguments = fragmentArguments;
return (T) this;
}
public Class<? extends Fragment> getFragmentClass() {
return mFragmentClass;
}
public T setFragmentClass(Class<? extends Fragment> fragmentClass) {
if (mFragmentClass == fragmentClass) {
return (T) this;
}
mFragmentClass = fragmentClass;
mSavedState = null;
return (T) this;
}
public CharSequence getLabel() {
return mLabel;
}
public T setLabel(CharSequence label) {
mLabel = label;
invalidate();
return (T) this;
}
public Drawable getIcon() {
return mIcon;
}
public T setIconAttr(int attrId) {
TypedArray a = mSliderMenu.getActivity().obtainStyledAttributes(new int[]{attrId});
final Drawable drawable = a.getDrawable(0);
a.recycle();
return setIcon(drawable);
}
public T setIcon(int resId) {
if (mSliderMenu == null) {
throw new IllegalStateException("You cannot provide icon before adding item to SliderMenu");
}
return setIcon(DrawableCompat.getDrawable(mSliderMenu.getActivity().getResources(), resId));
}
public T setIcon(Drawable icon) {
mIcon = icon;
invalidate();
return (T) this;
}
public int getSelectionHandlerColor() {
return mSelectionHandlerColor;
}
public T setSelectionHandlerColor(int selectionHandlerColor) {
mSelectionHandlerColor = selectionHandlerColor;
return (T) this;
}
public String getTag() {
return mTag;
}
public T setTag(String tag) {
mTag = tag;
return (T) this;
}
public int getTextAppereance() {
return mTextAppereance;
}
public T setTextAppereance(int textAppereance) {
mTextAppereance = textAppereance;
return (T) this;
}
public int getTextAppereanceInverse() {
return mTextAppereanceInverse;
}
public T setTextAppereanceInverse(int textAppereanceInverse) {
mTextAppereanceInverse = textAppereanceInverse;
return (T) this;
}
private void invalidate() {
if (mSliderMenu != null) {
mSliderMenu.invalidate();
}
}
public boolean isSaveState() {
return mSaveState;
}
public T setSaveState(boolean saveState) {
if (mSaveState == saveState) {
return (T) this;
}
mSaveState = saveState;
if (!saveState) {
mSavedState = null;
}
return (T) this;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(mFragmentClass == null ? null : mFragmentClass.getName());
dest.writeParcelable(mSaveState ? mSavedState : null, flags);
dest.writeInt(mSaveState ? 1 : 0);
dest.writeInt(mCustomLayout);
dest.writeInt(mBackgroundColor);
dest.writeInt(mSelectionHandlerColor);
dest.writeInt(mTextAppereance);
dest.writeInt(mTextAppereanceInverse);
TextUtils.writeToParcel(mLabel, dest, flags);
}
public T fillColors(int[] colors) {
if (colors != null && colors.length >= 2 && mSliderMenu != null) {
final Resources res = mSliderMenu.getActivity().getResources();
fillColors(res.getColor(colors[0]), res.getColor(colors[1]));
}
return (T) this;
}
public T fillColors(int backgroundColor, int selectionHandlerColor) {
setBackgroundColor(backgroundColor);
setSelectionHandlerColor(selectionHandlerColor);
return (T) this;
}
public boolean hasVisiblePage() {
return mFragmentClass != null;
}
}